// Observer用于劫持监听所有属性
const data = {
  name: "zhangsan",
  age: 20,
  sex: 1,
};

const observer = (data, item, value) => {
  Object.defineProperty(data, item, {
    get() {
      return value;
    },
    set(val) {
      value = val;
      // 在这里进行页面的重新渲染
    },
  });
};

// ["name", "age", "sex"]
Object.keys(data).forEach((item) => {
  observer(data, item, data[item]);
});

console.log(data.name);
console.log(data.age);
data.name = "lisi";
console.log(data.name);
